home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_09_11 / 9n11107a < prev    next >
Text File  |  1991-09-21  |  2KB  |  75 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. //
  5. // String class with overloaded cat function
  6. //
  7. class String
  8.         {
  9. public:
  10.         String() { ... }
  11.         String(const char *s) { ... }
  12.         String(const String &s) { ... }
  13.         ~String() { delete str; }
  14.         size_t length() { return len; }
  15.         const char *text() { return str; }
  16.         void cat(char c);
  17.         void cat(const char *s);
  18.         void cat(const String &s);
  19.         char &sub(size_t i) { ... }
  20. private:
  21.         size_t len;
  22.         char *str;
  23.         };
  24.  
  25. //
  26. // append a character to a String
  27. //
  28. void String::cat(char c)
  29.         {
  30.         char *p = strcpy(new char[len + 2], str);
  31.         p[len++] = c;
  32.         p[len] = '\0';
  33.         delete str;
  34.         str = p;
  35.         }
  36.  
  37. //
  38. // append a nul-terminated string to a String
  39. //
  40. void String::cat(const char *s)
  41.         {
  42.         size_t n = len + strlen(s) + 1;
  43.         char *p = strcpy(new char[n], str);
  44.         strcat(p, s);
  45.         delete str;
  46.         str = p;
  47.         }
  48.  
  49. //
  50. // append a String to a String
  51. //
  52. void String::cat(const String &s)
  53.         {
  54.         size_t n = len + s.len + 1;
  55.         char *p = strcpy(new char[n], str);
  56.         strcat(p, s.str);
  57.         delete str;
  58.         str = p;
  59.         }
  60.  
  61. int main()
  62.         {
  63.         size_t i;
  64.         String s1("hello"); // s1 = "hello"
  65.         String s2(s1);      // s2 = "hello"
  66.         s2.cat(',');        // s2 = "hello,"
  67.         s2.cat(' ');        // s2 = "hello, "
  68.         s2.cat(s2);         // s2 = "hello, hello, "
  69.         s2.cat("world");    // s2 = "hello, hello, world"
  70.         printf("s1 = %s\n", s1.text());
  71.         printf("s2 = %s\n", s2.text());
  72.         return 0;
  73.         }
  74.  
  75.